package br.com.swp.campestre.entity;

import java.io.Serializable;
import java.math.BigDecimal;
import java.util.Date;

import javax.persistence.Entity;
import javax.persistence.EnumType;
import javax.persistence.Enumerated;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
import javax.persistence.ManyToOne;
import javax.persistence.SequenceGenerator;
import javax.persistence.Temporal;
import javax.persistence.TemporalType;
import javax.persistence.Version;

import org.jboss.seam.annotations.AutoCreate;

import br.com.swp.campestre.enumeration.StatusParcela;

@Entity
@AutoCreate
@SequenceGenerator(sequenceName="parcelaFinancimentoCaixa_seq" ,  name="parcelaFinancimentoCaixa_seq" , allocationSize=1)
public class ParcelaFinancimentoCEF implements Serializable, Comparable<ParcelaFinancimentoCEF>
{

    /**
	 * 
	 */
	private static final long serialVersionUID = -2187605571465069789L;
	private Long id;
    private Integer version;
	private Integer parcela;
	private BigDecimal valor;
	private Date dataVencimento;
	private Venda venda;
	
	private StatusParcela statusParcela;  
		
    @Id @GeneratedValue(strategy=GenerationType.SEQUENCE , generator="parcelaFinancimentoCaixa_seq")	
    public Long getId() {
        return id;
    }

    public void setId(Long id) {
        this.id = id;
    }

    @Version
    public Integer getVersion() {
        return version;
    }

    private void setVersion(Integer version) {
        this.version = version;
    }

	public void setVenda(Venda venda) {
		this.venda = venda;
	}
	
	@ManyToOne
	public Venda getVenda() {
		return venda;
	}

	public void setParcela(Integer parcela) {
		this.parcela = parcela;
	}

	public Integer getParcela() {
		return parcela;
	}

	public void setValor(BigDecimal valor) {
		this.valor = valor;
	}

	public BigDecimal getValor() {
		return valor;
	}

	@Temporal(TemporalType.DATE)
	public Date getDataVencimento() {
		return dataVencimento;
	}

	public void setDataVencimento(Date dataVencimento) {
		this.dataVencimento = dataVencimento;
	}

	@Enumerated(EnumType.STRING)
	public StatusParcela getStatusParcela() {
		return statusParcela;
	}

	public void setStatusParcela(StatusParcela statusParcela) {
		this.statusParcela = statusParcela;
	}

	public int compareTo(ParcelaFinancimentoCEF _p) {
		
		if(_p == null) return 0;
		
		return this.parcela.compareTo(_p.parcela);
	}



}
